<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <div id="app">
        <p>计算属性和函数都能实现的功能，选择优先级？</p>
        <p>当计算过程比较复杂而且需要反复使用时，用计算属性；计算结果只用一次，就选择普通函数</p>
        <p>{{msg}}</p>
        <hr>
        <p>{{reverseStr}}</p>
        <p>{{reverseStr}}</p>
        <p>{{reverseStr}}</p>
        <hr>
        <p>{{reverseStrFn()}}</p>
        <p>{{reverseStrFn()}}</p>
        <p>{{reverseStrFn()}}</p>
    </div>
    <script src="./js/vue.js"></script>
    <script>
        let vm = new Vue({
            el: '#app',
            data: {
                msg: 'hello, vue'
            },
            // 计算属性--将一些步骤较多比较复杂的代码，放在这里统一处理
            // 不是函数，使用时不要带括号。计算属性是一个用来计算的属性
            // 特点：依赖缓存，当原数据不变时，会讲结算结果缓存起来，下次调用时直接返回而不是再次计算
            computed: {
                reverseStr() {
                    console.log('computed');
                    return this.msg.split('').reverse().join('')
                }
            },
            methods: {
                // 普通函数，调用几次就执行几次，没有缓存
                reverseStrFn() {
                    console.log('fn');
                    return this.msg.split('').reverse().join('')
                }
            }
        })
    </script>
</body>
</html>